package Algorithm.Greedy;

import java.util.*;

public class lemonadeChange {
    public static void main(String[] args) {
        int[] bills = {5, 5, 10, 10, 20};
        if (bills[0] == 10 || bills[0] == 20) {
            System.out.println("false");
        }

        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(5, 1);
        for (int i = 1; i < bills.length; i++) {
            switch (bills[i]) {
                case 10:
                    if (map.containsKey(5)) {
                        map.put(5, map.getOrDefault(5, 0) - 1);
                        map.put(10, map.getOrDefault(10, 0) + 1);
                        break;
                    } else {
                        System.out.println("false");
                    }
                case 20:
                    if (map.containsKey(10) && map.containsKey(5) && map.get(5) > 0 && map.get(10) > 0) {
                        map.put(10, map.getOrDefault(10, 0) - 1);
                        map.put(5, map.getOrDefault(5, 0) - 1);
                        map.put(20, map.getOrDefault(20, 0) + 1);
                        break;
                    } else if (map.containsKey(5) && map.get(5) >= 3) {
                        map.put(5, map.getOrDefault(5, 0) - 3);
                        map.put(20, map.getOrDefault(20, 0) + 1);
                        break;
                    } else {
                        System.out.println("false");
                    }
                default:
                    map.put(5, map.getOrDefault(5, 0) + 1);
                    break;
            }
        }
        System.out.println("true");
    }
}
